<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <div class="checkbox" id="app">
            <!-- 这里的 $event 是将当前对象传入进去，具体详情请参照vue官方文档 -->
            <input type="checkbox" @click="checkAll($event)"> 全选
            <!-- v-model 双向数据绑定命令 -->
            <input class="checkItem" type="checkbox" value="苹果" v-model="checkData"> 苹果
            <input class="checkItem" type="checkbox" value="梨子" v-model="checkData"> 梨子
            <input class="checkItem" type="checkbox" value="香蕉" v-model="checkData"> 香蕉
            <input class="checkItem" type="checkbox" value="榴莲" v-model="checkData"> 榴莲
    </div>
    <script src="./js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data() {
                return {
                    checkData: [] // 双向绑定checkbox数据数组
                }
            },
            methods: {
                checkAll(e) { // 点击全选事件函数
                    console.log(e);
                    var checkObj = document.querySelectorAll('.checkItem'); // 获取所有checkbox项
                    if (e.target.checked) { // 判定全选checkbox的勾选状态
                        for (var i = 0; i < checkObj.length; i++) {
                                this.checkData = true
                        }
                    } else { // 如果是去掉全选则清空checkbox选项绑定数组
                        this.checkData = [];
                    }
                }
            }
        });
    </script>
</body>
<script>
</script>

</html>